package com.xbongbong.paas.domain.entity;

import com.xbongbong.paas.enums.MenuTypeEnum;
import com.xbongbong.paas.toolbox.util.DateUtil;
import com.xbongbong.paas.toolbox.util.StringUtil;
import com.xbongbong.paas.toolbox.wrap.Entity;
import com.xbongbong.pro.constant.I18nStringConstant;
import com.xbongbong.pro.enums.DistributorMarkEnum;
import com.xbongbong.pro.enums.SaasMarkEnum;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.context.i18n.LocaleContextHolder;

import java.util.Locale;
import java.util.Objects;

/**
 * 菜单实体
 * @author wufeng
 * @date 2018/8/8 9:34
 *
 * 修改时间： 2019-1-3 19:40 何卡特 get/set方法改用lombok实现
 */
@Getter
@Setter
@ToString
public class PaasMenuEntity extends Entity {

    private static final long serialVersionUID = 7235305750222436003L;

    /**
     * 主键id
     */
    private Long id;

    /**
     * 公司id
     */
    private String corpid;

    /**
     * 应用id
     */
    private Long appId;

    /**
     * 父类id
     */
    private Long parentId;

    /**
     * 表单id
     */
    private Integer formId;

    /**
     * 菜单名称
     */
    private String name;

    /**
     * 菜单名称英文版
     */
    private String nameEn;

    /**
     * 应用图标
     */
    private String icon;
    /**
     * 颜色，16进制色，如 FF0000
     */
    private String color;

    /**
     * 菜单排序
     */
    private Integer sort;

    /**
     * 菜单类型，1 分组，2 表单，3 表单(开启流程)，4 统计
     */
    private  Integer type;

    /**
     * 创建者userId
     */
    private String creatorId;

    /**
     * 创建时间时间戳
     */
    private Long addTime;

    /**
     * 更新时间时间戳
     */
    private Long updateTime;

    /**
     * 删除标记
     */
    private Integer del;

    /**
     * 菜单标示，主要用于saas菜单识别，如"contractList"
     */
    private String alias;

    /**
     * 1为saas菜单，2为自建菜单
     */
    private Integer saasMark;

    /**
     * 是否启用，1启用，0不启用
     */
    private Integer enable;

    /**
     * 对应的链接
     */
    private String url;
    /**
     * 手机端对应的链接
     */
    private String mobileUrl;
    /**
     * 镜像菜单id(镜像应用复制时使用)
     */
    private Long mirrorMenuId;
    /**
     * 经销商标识
     */
    private Integer distributorMark;

    public PaasMenuEntity(){
        this.del = 0;
    }

    public PaasMenuEntity(String corpid, Long appId, String name, String alias, int sort, String url, String mobileUrl, Integer enable, String color, String icon, String creatorId) {
        // 默认置为0，子菜单需在外部再设置未相应父菜单的menuId
        this.parentId = 0L;
        // 默认设置未非流程表单（需在外部根据菜单具体情况再设置）
        this.type = MenuTypeEnum.FORM.getType();
        // 默认为saas
        this.saasMark = SaasMarkEnum.SAAS.getCode();

        this.corpid = corpid;
        this.appId = appId;
        this.name = name;
        this.alias = alias;
        this.sort = sort;
        this.url = url;
        this.mobileUrl = mobileUrl;
        this.enable = enable;
        this.color = color;
        this.icon = icon;
        this.creatorId = creatorId;
        Long now = DateUtil.getNow();
        this.addTime = now;
        this.updateTime = now;
        this.del = 0;
        this.distributorMark = DistributorMarkEnum.OTHER.getCode();
    }

    public String getName() {
        Locale locale = LocaleContextHolder.getLocale();
        if (Objects.equals(locale.getLanguage(), I18nStringConstant.ENGLISH_LANGUAGE)&& StringUtil.isNotEmpty(nameEn)) {
            return nameEn;
        }
        return name;
    }

    public String getNameEn() {
        Locale locale = LocaleContextHolder.getLocale();
        if (Objects.equals(locale.getLanguage(), I18nStringConstant.ENGLISH_LANGUAGE)) {
            return name;
        }
        return nameEn;
    }
}
